package com.sheng.leetcode.year2022.month12.day15;

import org.junit.Test;

/**
 * @author liusheng
 * @date 2022/12/15
 * <p>
 * 1945. 字符串转化后的各位数字之和<p>
 * <p>
 * 给你一个由小写字母组成的字符串 s ，以及一个整数 k 。<p>
 * 首先，用字母在字母表中的位置替换该字母，将 s 转化 为一个整数（也就是，'a' 用 1 替换，'b' 用 2 替换，... 'z' 用 26 替换）。<p>
 * 接着，将整数 转换 为其 各位数字之和 。共重复 转换 操作 k 次 。<p>
 * 例如，如果 s = "zbax" 且 k = 2 ，那么执行下述步骤后得到的结果是整数 8 ：<p>
 * 转化："zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124<p>
 * 转换 #1：262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17<p>
 * 转换 #2：17 ➝ 1 + 7 ➝ 8<p>
 * 返回执行上述操作后得到的结果整数。<p>
 * <p>
 * 示例 1：<p>
 * 输入：s = "iiii", k = 1<p>
 * 输出：36<p>
 * 解释：操作如下：<p>
 * - 转化："iiii" ➝ "(9)(9)(9)(9)" ➝ "9999" ➝ 9999<p>
 * - 转换 #1：9999 ➝ 9 + 9 + 9 + 9 ➝ 36<p>
 * 因此，结果整数为 36 。<p>
 * <p>
 * 示例 2：<p>
 * 输入：s = "leetcode", k = 2<p>
 * 输出：6<p>
 * 解释：操作如下：<p>
 * - 转化："leetcode" ➝ "(12)(5)(5)(20)(3)(15)(4)(5)" ➝ "12552031545" ➝ 12552031545<p>
 * - 转换 #1：12552031545 ➝ 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ➝ 33<p>
 * - 转换 #2：33 ➝ 3 + 3 ➝ 6<p>
 * 因此，结果整数为 6 。<p>
 * <p>
 * 提示：<p>
 * 1 <= s.length <= 100<p>
 * 1 <= k <= 10<p>
 * s 由小写英文字母组成<p>
 * <p>
 * 来源：力扣（LeetCode）<p>
 * 链接：<a href="https://leetcode.cn/problems/sum-of-digits-of-string-after-convert">1945. 字符串转化后的各位数字之和</a><p>
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。<p>
 */
public class LeetCode1945 {

    @Test
    public void test01() {
//        String s = "iiii";
//        int k = 1;
        String s = "leetcode";
        int k = 2;
        System.out.println(new Solution().getLucky(s, k));
    }
}

class Solution {
    public int getLucky(String s, int k) {
        StringBuilder num = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            num.append(s.charAt(i) - 'a' + 1);
        }
        String string = num.toString();
        // 转换操作的循环
        while (k > 0) {
            int i = 0;
            for (int j = 0; j < string.length(); j++) {
                i += string.charAt(j) - '0';
            }
            string = String.valueOf(i);
            k--;
        }
        return Integer.parseInt(string);
    }
}
